package net.sql.i;

import java.util.List;

import net.dotool.page.PageModel;
import net.sql.bean.SqlParam;

/**
 * @author 李岩飞
 * @email eliyanfei@126.com
 * @date 2018年7月20日上午9:21:39
 */
public interface ISqlService {

	/**
	 * 普通查询
	 */
	<T> List<T> query(SqlParam sqlParam);

	/**
	 * 获取一条
	 */
	<T> T queryOne(SqlParam sqlParam);

	/**
	 * 获取Map值
	 */
	<T> T queryMap(SqlParam sqlParam);

	<T> T queryKeyMap(SqlParam sqlParam);

	/**
	 * 普通查询,自定义处理查询结果
	 */
	void query(SqlParam sqlParam, IDbRow row);

	void query(SqlParam sqlParam, IDataRow row);

	/**
	 * 统计数
	 */
	Long count(SqlParam sqlParam);

	String getSql(SqlParam sqlParam);

	/**
	 * 获取ID
	 */
	Integer id(SqlParam sqlParam);

	/**
	 * 分页查询
	 */
	PageModel pageQuery(SqlParam sqlParam);

	/**
	 * 分页查询
	 */
	PageModel pageQuery(SqlParam sqlParam, IDataRow row);

	/**
	 * 针对update 和delete的操作
	 */
	void execute(SqlParam sqlParam);
}
